/*
  这是一个用户信息相关的仓库 => 只存储用户信息这种数据
*/

export default {
  namespaced: true, // 固定的 => 将小仓库封闭

  // data() { return {} } 组件内自己的数据 不会共享给别人
  // user仓库的数据
  // 这个是仓库的数据 共享的数据 => 大家的数据
  // state() {
  //   // 可以是以前的函数写法 也可以是对象写法
  //   return {
  //     // username: '张三'
  //     // age: 18,
  //     // hobby: ['唱', '跳', 'rap']

  //   }
  // },

  state: {
    // 如果本地有token 那么token应该优先使用本地数据 否则使用''
    //  true ? '' : ''
    token: localStorage.getItem('token') ? localStorage.getItem('token') : '' // 存储token数据
  },

  // 仓库的数据 想要修改 必须通过mutations函数
  mutations: {
    // 函数1
    // changeName(state, newName) {
    //   // 用于更新username
    //   state.username = newName
    // }
    // 函数2
    setToken(state, newToken) {
      state.token = newToken // 更新仓库的token数据
      localStorage.setItem('token', newToken)// 存储数据到本地 为了永久留下来
    },
    // 函数3
    removeToken(state) {
      state.token = '' // 清除仓库token
      localStorage.removeItem('token') // 移除本地存储的token
    }
  },

  // 但是mutations函数必须是同步的!!!(底层设计上)
  // 发请求这种操作属于异步(耗时的操作) 不能写在mutations中
  actions: {
    // 函数1
    // fn() {
    //   // 可以发请求
    // }
    // 函数2
    // 函数3
  }
}
